import router from '@/router'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import store from '@/store' // store===this.$store
// 进度条
// nprogress
// 1:下载  yarn add nprogress
// 2:import Nprogress from 'nprogress'
// 3:导入css import 'nprogress/nprogress.css'
// 4:开始 Nprogress.start()   结束 Nprogress.done()
// Nprogress.configure({ showSpinner: false });
// Nprogress.configure({ showSpinner: false })
const whiteList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  // console.log('beforeEach')

  /*
   是否有token
        有
            判断要去的页面是不是登录页
                 是：跳转到首页
                 不是：放行（正常进入）
        没有
            判断要去的页面是不是白名单页面
               是：放行（正常进入）
               不是：跳转到登录页

  用户信息处理
    1：存储在vuex
       a:定义存储用户信息
       b:定义修改用户信息的方法
       c:定义接口api(获取用户信息接口)
       d:导入接口，在actions中定义方法调用api获取用户信息
    2:调用在导航守卫
       f:触发调用actions在导航守卫
*/
  // console.log('to', to)
  const token = store.state.user.token
  if (token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      // 调用actions获取用户信息
      // console.log('1')
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/getUserInfo')
        next(to)
      } else {
        next()
      }
    }
  } else {
    if (whiteList.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
})
// router.beforeEach((to, from, next) => {
//   // next()
//   next('/')
// })
// 解析守卫
router.beforeResolve((to, from, next) => {
  // console.log('beforeResolve')
  next()
})
router.afterEach((to, from) => {
  Nprogress.done()
  // console.log('afterEach')
})
